﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Text.RegularExpressions;

namespace LI4
{
    public partial class perfilEmpresa : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["username"] == null)
            {
                Response.Redirect("main.aspx");
            }
            LI4.Business.Login currUser = Program.Login;

            Data.Localidade localidade = new Data.Localidade();
            Data.Distrito distrito = new Data.Distrito();
            Data.Area area = new Data.Area();
            Program.localidades = localidade.getLocalidades();
            Program.distritos = distrito.getDistritos();
            Program.areas = area.getAreas();

            if (nome.Text == "")
            {

                foreach (Business.Distrito dist in Program.distritos)
                    lstdistrito.Items.Add(dist.Nome);

                foreach (Business.Area areap in Program.areas)
                    areaLB.Items.Add(areap.Nome);

                int codDistr = 0;
                string distr = lstdistrito.Text;
                foreach (Business.Distrito dist in Program.distritos)
                    if (dist.Nome.Equals(distr)) codDistr = dist.CodDistrito;

                foreach (Business.Localidade local in Program.localidades)
                {
                    if (local.Distrito.CodDistrito == codDistr) lstlocalidade.Items.Add(local.Nome);
                }
                if (lstlocalidade.Items.Count > 0) lstlocalidade.SelectedIndex = 0;

                //load das infos pessoais

                    Business.Empresa currEmp = new LI4.Business.Empresa(new LI4.Data.Empresa().getEmpresa(Session["username"].ToString()));

                    nome.Text = currEmp.Nome;
                    email.Text = currEmp.Mail;
                    telefone.Text = currEmp.Telefone.ToString();
                    morada.Text = currEmp.Rua;
                    codpostal.Text = currEmp.CodPostal.Substring(0,4);
                    codpostal1.Text = currEmp.CodPostal.Substring(4, 3);
                    descricaoTB.Text = currEmp.Descricao;
                    lstdistrito.SelectedValue = currEmp.Localidade.Distrito.ToString();

                    foreach (Business.Distrito dist in Program.distritos)
                        if (dist.Nome.Equals(distr)) codDistr = dist.CodDistrito;

                    foreach (Business.Localidade local in Program.localidades)
                    {
                        if (local.Distrito.CodDistrito == currEmp.Localidade.Distrito.CodDistrito) lstlocalidade.Items.Add(local.Nome);
                    }

                    lstlocalidade.SelectedValue = currEmp.Localidade.Nome;

                    areaLB.SelectedValue = currEmp.Area.Nome;
                
            }

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            Business.Empresa currEmp = new LI4.Business.Empresa(new LI4.Data.Empresa().getEmpresa(Session["username"].ToString()));
            string username = tbUser.Text;
            string pass = tbPass.Text;
            string pass1 = tbPass1.Text;

            if (username != Program.Login.Password) Response.Write("<script>alert('Password Actual Errada')</script>");
            else if (pass != pass1) Response.Write("<script>alert('Falhou Confirmação da nova Password')</script>");
            else if (pass.Length < 1) Response.Write("<script>alert('Campo Password inválido')</script>");
            else
            {
                Business.Login novoUser = new LI4.Business.Login(Program.Login.Username, pass, 3, 20);
                Data.Login novoLogin = new LI4.Data.Login();
                Program.Login = novoUser;

                novoLogin.update(Program.Login);
                Response.Write("<script>alert('Dados de Login alterados com sucesso')</script>");
                Response.Redirect("perfil.aspx");
            }
        }

        protected void lstdistrito_SelectedIndexChanged1(object sender, EventArgs e)
        {
            LI4.Business.Login currUser = Program.Login;



            Data.Localidade localidade = new Data.Localidade();
            Data.Distrito distrito = new Data.Distrito();

            Program.localidades = localidade.getLocalidades();
            Program.distritos = distrito.getDistritos();

            lstlocalidade.Items.Clear();

            Program.localidades = localidade.getLocalidades();
            Program.distritos = distrito.getDistritos();

            int codDistr = 0;
            string distr = lstdistrito.Text;
            foreach (Business.Distrito dist in Program.distritos)
                if (dist.Nome.Equals(distr)) codDistr = dist.CodDistrito;

            foreach (Business.Localidade local in Program.localidades)
            {
                if (local.Distrito.CodDistrito == codDistr) lstlocalidade.Items.Add(local.Nome);
            }
            if (lstlocalidade.Items.Count > 0) lstlocalidade.SelectedIndex = 0;
        }

        protected void lstlocalidade_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            string nome_ = nome.Text;
            string email_ = email.Text;
            string morada_ = morada.Text;
            string codpostal2 = codpostal.Text;
            string codpostal3 = codpostal1.Text;
            string codpostal_ = codpostal2 + codpostal3;
            string nomearea = areaLB.SelectedItem.Text;
            string descricaot = descricaoTB.Text;
            string nomelocalidade = lstlocalidade.SelectedItem.Text;
            string curr_ = "";
            int telefone_ = 1;
            int telefonep = 1;
            int cod = 1;

            try
            {
                int telefonez = Int32.Parse(telefone.Text);
            }
            catch
            {
                telefonep = 0;
            }

            try
            {
                int codP = Int32.Parse(codpostal_);
            }
            catch
            {
                cod = 0;
            }
            Regex nomereg = new Regex(@"[a-zA-Z0-9àáéóúãâÂÁÀÉêÊÍÓçÇÃÓõÕôÚ.,:-_]+([ a-zA-Z0-9àáéêÊóúãâÂÁÀÉÍÓçÇÃÓÚõÕô.,:-_]+)*");
            Regex mailReg = new Regex(@"[a-zA-Z0-9]+@[a-zA-Z]+\.[a-zA-Z]+");
            if (!nomereg.IsMatch(nome_)) Response.Write("<script>alert('Campo Nome inválido')</script>");
            else if (!mailReg.IsMatch(email_)) Response.Write("<script>alert('Campo email inválido')</script>");
            else if (!nomereg.IsMatch(morada_)) Response.Write("<script>alert('Campo Rua inválido')</script>");
            else if (cod == 0) Response.Write("<script>alert('Campo Código-Postal inválido')</script>");
            else if (!nomereg.IsMatch(descricaot)) Response.Write("<script>alert('Campo Descrição inválido')</script>");
            else if (telefonep == 0) Response.Write("<script>alert('Campo Telefone inválido')</script>");

            else
            {
                Business.Empresa currEmp = new LI4.Business.Empresa(new LI4.Data.Empresa().getEmpresa(Session["username"].ToString()));
                Business.Localidade local = new LI4.Business.Localidade(new Data.Localidade().getLocalidadeNome(nomelocalidade));
                Business.Area areac = new Business.Area(new Data.Area().getAreaNome(nomearea));

                
                Business.Empresa novaEmp = new Business.Empresa(nome_, email_, telefone_, morada_, codpostal_, local, descricaot, areac, currEmp.Situacao, Program.Login);

                Data.Empresa novaEmp2 = new Data.Empresa();

                novaEmp2.update(novaEmp);
                Response.Write("<script>alert('Dados Pessoais actualizados')</script>");
                System.Threading.Thread.Sleep(4000);

                Response.Redirect("perfilEmpresa.aspx");

            }
        }
    }
}
